package util;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 文件读写工具类，支持读取和写入字符串到文件
 */
public class FileUtil {

    /**
     * 公共静态，无须实例化
     * 读取指定路径文件内容，返回字符串
     * @param path 文件路径
     * @return 文件内容字符串，读取异常返回空字符串
     */
    public static String readFile(String path) {
        File file = new File(path);
        if (!file.exists()) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {//如果文件读取过程中出现异常（如文件被占用或读取错误），打印错误信息并返回空字符串。
            e.printStackTrace();
            return "";
        }
        return sb.toString();
    }

    /**
     * 写字符串内容到指定路径文件，覆盖写入
     * @param path 文件路径
     * @param content 写入内容
     * @return 写入是否成功
     */
    public static boolean writeFile(String path, String content) {
        try (BufferedWriter bw = new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(path), StandardCharsets.UTF_8))) {
            bw.write(content);
            bw.flush();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
}
